#ifndef unigame_Interpolation_h
#define unigame_Interpolation_h

namespace unigame
{
	class Interpolation
	{
	public:
		static float linear(float time, float duration, float* param);

		static float expOut(float time, float duration, float* param);
		static float expIn(float time, float duration, float* param);
		static float expOutIn(float time, float duration, float* param);
		static float expInOut(float time, float duration, float* param);

		static float elasticOut(float time, float duration, float* param);
		static float elasticIn(float time, float duration, float* param);
		static float elasticOutIn(float time, float duration, float* param);
		static float elasticInOut(float time, float duration, float* param);

		static float quarticOut(float time, float duration, float* param);
		static float quarticIn(float time, float duration, float* param);
		static float quarticInOut(float time, float duration, float* param);
		static float quarticOutIn(float time, float duration, float* param);

		static float quinticOut(float time, float duration, float* param);
		static float quinticIn(float time, float duration, float* param);
		static float quinticOutIn(float time, float duration, float* param);
		static float quinticInOut(float time, float duration, float* param);

		static float sinusIn(float time, float duration, float* param);
		static float sinusOut(float time, float duration, float* param);
		static float sinusInOut(float time, float duration, float* param);
		static float sinusOutIn(float time, float duration, float* param);
	};

	typedef void(Interpolation::*InterFun)(float, float, float*); 
}

#endif